home *** CD-ROM | disk | FTP | other *** search
- { SysMenu.pas -- Add a command to the system menu }
-
- program SysMenu;
-
- uses WinTypes, WinProcs, WObjects;
-
- const
-
- cm_About = 100; { 'About' command ID }
-
- type
-
- SysMenuApplication = object(TApplication)
- procedure InitMainWindow; virtual;
- end;
-
- PSysMenuWindow = ^SysMenuWindow;
- SysMenuWindow = object(TWindow)
- SysMenuH: HMenu;
- procedure SetupWindow;
- virtual;
- procedure CMAbout(var Msg: TMessage);
- procedure WMSysCommand(var Msg: TMessage);
- virtual wm_First + wm_SysCommand;
- end;
-
-
- { SysMenuApplication }
-
- {- Initialize SysMenuApplication object's window }
- procedure SysMenuApplication.InitMainWindow;
- begin
- MainWindow := New(PSysMenuWindow, Init(nil, 'SysMenu'))
- end;
-
-
- { SysMenuWindow }
-
- {- Add About command to system menu }
- procedure SysMenuWindow.SetupWindow;
- begin
- SysMenuH := GetSystemMenu(HWindow, false);
- AppendMenu(SysMenuH, mf_String, cm_About, 'About...')
- end;
-
- {- Execute About command }
- procedure SysMenuWindow.CMAbout(var Msg: TMessage);
- begin
- MessageBox(HWindow, 'System Menu Demo', 'About', mb_Ok)
- end;
-
- {- Intercept wm_SysCommand messages }
- procedure SysMenuWindow.WMSysCommand(var Msg: TMessage);
- begin
- case Msg.WParam of
- cm_About: CMAbout(Msg);
- else
- DefWndProc(Msg)
- end
- end;
-
- var
-
- SysMenuApp: SysMenuApplication;
-
- begin
- SysMenuApp.Init('SysMenuApp');
- SysMenuApp.Run;
- SysMenuApp.Done
- end.
-
-
- {--------------------------------------------------------------
- Copyright (c) 1991 by Tom Swan. All rights reserved.
- Revision 1.00 Date: 2/20/1991
- ---------------------------------------------------------------}
-